package com.example.obs.service.permission;

import com.example.obs.vo.PermissionSetInput;
import com.example.obs.vo.ResultVO;

/**
 * @author Kevin
 * @date 2020-09-23 15:30
 */
public interface IPermissionService {

    /**
     * 检查上传权限
     * @param path 上传路径
     * @return 当前路径是否有权限
     **/
    boolean upload(String path);

    /**
     * 检查下载（查看）权限
     * @param path 文件/文件夹路径
     * @return path是否有权限
     **/
    boolean download(String path);

    /**
     * 检查删除权限
     * @param path 文件/文件夹路径
     * @return path是否有权限
     **/
    boolean delete(String path);

    /**
     * 检查创建文件夹权限
     * @param path 文件/文件夹路径
     * @return path是否有权限
     **/
    boolean mkdir(String path);

    /**
     * 检查分享权限
     * @param path 文件/文件夹路径
     * @return path是否有权限
     **/
    boolean share(String path);

    /**
     * 查询文件/文件夹权限，不受父级权限影响
     * @param departmentId 部门id
     * @param fileId 文件/文件id
     * @return 权限值
     **/
    Integer getPermission(Integer departmentId, Integer fileId);

    /**
     * 设置文件/文件夹权限
     * @param input 输入参数
     * @return 结果视图
     **/
    ResultVO setPermission(PermissionSetInput input);

    /**
     * 上传文件，对自己部门设置可见
     * @param path 文件路径
     * @return 成功返回true，非资源库或者失败返回false
     **/
    boolean setPermission(String path);

}
